#pragma once

#include "RayTracer/Camera.h"

class PinholeCamera : public Camera
{
private:
	World_ptr _world;
	Ray _pointAndDirection;
	Point _upDirection;
	Direction _rightDirection;
	double _screenDist, _screenWidth, _screenHeight;
	unsigned _samplingWidth;

public:
	PinholeCamera(const Ray&, const Point& upDirection, double screenDist, double screenWidth, double screenHeight, unsigned sampleingWidth);
	PinholeCamera(const Ray&, const Point& upDirection, double halfUpDownFrustum, double halfLeftRightFrustum, unsigned sampleingWidth);
	virtual void Init(World_ptr);
	virtual void Draw(IplImage* img, unsigned* counter);
	~PinholeCamera();
};
